1.問題討論&問卷資料傳輸流程
2.程式實作
3.Dart語言學習: 縮減操作(reduce/fold)
1.問題討論&問卷資料傳輸流程
Q: 每題的分數是如何被計算和"症狀總分"如何加總
scores.values.reduce((a, b) => a + b)
計算。ScoreHistoryDB _scoreHistoryDB
是用於處理分數歷史數據庫的操作的實例。Q: 每次分數加總後,要如何存到手機資料庫
saveScoreAndDate(int totalScore)
方法,此方法會將當前的總分和日期保存到數據庫中。saveScoreAndDate
此方法首先獲取當前的日期和時間,然後將其格式化為ISO 8601格式,然後它會打開數據庫並將總分和格式化的日期插入到數據庫中。Q: 有什麼額外有趣的介面設計
程式碼在昨天的鐵人賽文章中 D8-Records介面,國際攝護腺症狀評分表輕鬆填_part2
// 縮減操作: reduce
scores.values.reduce((a, b) => a + b)
// 等同於以下
int sum = 0;
for (var score in scores.values) {
sum += score;
}
這段 Dart 語法 scores.values.reduce((a, b) => a + b)
是一種縮減(或稱累積)操作,它對 scores
這個字典的所有值進行運算並返回一個單一的結果。
這裡的 scores
是一個字典,它的每個鍵對應一個問題,而每個值對應該問題的分數。
逐步解釋這段語法:
scores
字典中的所有值,即所有問題的分數。scores.values
中的每個值。a
和 b
。在每一步中,它將這兩個參數相加,然後返回結果。舉例:scores.values
為 [1, 2, 3, 4, 5],則縮減操作將進行如下:
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
10 + 5 = 15
最後的結果是 15。
在 Python 中,這種操作可以使用 functools.reduce
函數實現。例如:
from functools import reduce
values = [1, 2, 3, 4, 5]
result = reduce(lambda a, b: a + b, values)
print(result) # Output: 15
補充:
縮減操作在不同的語境和語言中可能有不同的稱呼,但在大多數功能性編程語言和環境中,這種操作被稱為 "reduce"。因此,其正式英文名稱是 "reduce",有時也被稱為 "fold"。
functools.reduce
)和許多其他語言中,都使用這個名稱。總結,"reduce" 或 "fold" 是一種將列表(或其他集合)的元素組合成單一值的操作。這通常是通過反覆使用一個給定的二元運算(匿名函數或 lambda 函數)來實現。
幸福並不是曾經, 而是妳要把接下來的日子,過成什麼樣子 - 角子
Happiness isn't about the past; it's about how you choose to live your days ahead.
今日要聽陳柏霖《我不會喜歡你》